home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1992 June: ROMin Holiday / ADC Developer CD (1992-06) (''ROMin Holiday'')_iso / Developer Connection - 06-1992.iso / Periodicals / develop / develop 8 code / TValidText / UDateTimeUtilities.inc1.p < prev    next >
Encoding:
Text File  |  1991-10-09  |  5.8 KB  |  250 lines  |  [TEXT/MPS ]

  1. {*******************************************************************************
  2. UDateTimeUtilities.inc1.p
  3.     This file contains the implementations of a number of routines which help
  4.     make the Script Manager more useable.
  5. *******************************************************************************}
  6.  
  7. {###############################################################################
  8. Implementation Globals (global extent, local scope)
  9. ###############################################################################}
  10.  
  11. VAR
  12.     pDateCache:            DateCacheRecord;{ Used by Script Manager string calls }
  13.     
  14.  
  15.  
  16. {###############################################################################
  17. Unit Initialization
  18. ###############################################################################}
  19.  
  20. {------------------------------------------------------------------------------}
  21. {$S AInit}
  22.  
  23. PROCEDURE InitUDateTimeUtilities;
  24.     BEGIN
  25.     FailOSErr(InitDateCache(@pDateCache));
  26.     END;  { InitUDateTimeUtilities }
  27.  
  28.  
  29. {###############################################################################
  30. Global Routines
  31. ###############################################################################}
  32.  
  33. {------------------------------------------------------------------------------}
  34. {$S Date_Seg}
  35.     
  36. PROCEDURE InitLongDateRec(
  37.                     VAR    dateRec:        LongDateRec;
  38.                         toValue:        INTEGER);
  39.     { This routine places the given value in each field of the given rec }
  40.     
  41.     VAR
  42.         i:            INTEGER;
  43.  
  44.     BEGIN
  45.     WITH dateRec DO
  46.         BEGIN
  47.         FOR i := 0 to 13 DO
  48.             list[i] := toValue;
  49.         END;  { with dateRec }
  50.     END;  { InitLongDateRec }
  51.  
  52. {------------------------------------------------------------------------------}
  53. {$S Date_Seg}
  54.  
  55. PROCEDURE SecsToRec(
  56.                         dateSecs:        LongDateTime;
  57.                     VAR    dateRec:        LongDateRec);
  58.     BEGIN
  59.     IF (dateSecs = kNotADate)
  60.     THEN
  61.         InitLongDateRec(dateRec, 0)
  62.     ELSE
  63.         LongSecs2Date(dateSecs, dateRec);        { Script Manager routine }
  64.     END;  { SecsToRec }
  65.  
  66. {------------------------------------------------------------------------------}
  67. {$S Date_Seg}
  68.  
  69. PROCEDURE RecToSecs(
  70.                     VAR    dateRec:        LongDateRec;    { not changed }
  71.                     VAR    dateSecs:        LongDateTime);
  72.     BEGIN
  73.     LongDate2Secs(dateRec, dateSecs);            { Script Manager routine }
  74.     END;  { RecToSecs }
  75.  
  76. {------------------------------------------------------------------------------}
  77. {$S Date_Seg}
  78.  
  79. PROCEDURE DateToString(
  80.                         dateSecs:        LongDateTime;
  81.                         theDateForm:    DateForm;
  82.                     VAR    theDate:        Str255);
  83.         
  84.     BEGIN
  85.     IF (dateSecs = kNotADate)
  86.     THEN
  87.         theDate := ''
  88.     ELSE
  89.         BEGIN
  90.         IULDateString(dateSecs,                    { Script Manager routine }
  91.                       theDateForm,
  92.                       theDate,
  93.                       NIL);        { use system's 'itl0' }
  94.         END;
  95.     END;  { DateToString }
  96.  
  97. {------------------------------------------------------------------------------}
  98. {$S Date_Seg}
  99.                         
  100. PROCEDURE TimeToString(
  101.                         timeSecs:        LONGINT;
  102.                         wantSeconds:    BOOLEAN;
  103.                     VAR    theTime:        Str255);
  104.     VAR
  105.         longTime:        LongDateTime;
  106.     
  107.     BEGIN
  108.     IF (timeSecs = kNotATime)
  109.     THEN
  110.         theTime := ''
  111.     ELSE
  112.         BEGIN
  113.         longTime := timeSecs;
  114.         IULTimeString(longTime,                    { Script Manager routine }
  115.                       wantSeconds,
  116.                       theTime,
  117.                       NIL);        { use system's 'itl0' }
  118.         END;
  119.     END;  { TimeToString }
  120.  
  121. {------------------------------------------------------------------------------}
  122. {$S Date_Seg}
  123.  
  124. FUNCTION  StringToDate(
  125.                         dateStr:        Str255;
  126.                     VAR    dateSecs:        LongDateTime)
  127.                         :String2DateStatus;
  128.     
  129.     VAR
  130.         dateRec:        LongDateRec;
  131.         lengthUsed:        LONGINT;
  132.         status:        String2DateStatus;
  133.     
  134.     BEGIN
  135.     { must initialize dateRec }
  136.     InitLongDateRec(dateRec, 0);
  137.     
  138.     status := String2Date(                        { Script Manager routine }
  139.                             @dateStr[1],
  140.                             ord(dateStr[0]),
  141.                             @pDateCache,
  142.                             lengthUsed,
  143.                             dateRec);
  144.                             
  145.     IF (status >= 0)
  146.     THEN
  147.         RecToSecs(dateRec, dateSecs)
  148.     ELSE
  149.         dateSecs := kNotADate;
  150.     
  151.     StringToDate := status;
  152.     END;  { StringToDate }
  153.  
  154. {------------------------------------------------------------------------------}
  155. {$S Date_Seg}
  156.                         
  157. FUNCTION  StringToTime(
  158.                         timeStr:        Str255;
  159.                     VAR    timeSecs:        LONGINT)
  160.                         :String2DateStatus;
  161.     
  162.     VAR
  163.         timeRec:        LongDateRec;
  164.         lengthUsed:        LONGINT;
  165.         status:            String2DateStatus;
  166.         longSecs:        LongDateTime;
  167.     
  168.     BEGIN
  169.     { must initialize timeRec }
  170.     InitLongDateRec(timeRec, 0);
  171.     
  172.     status := String2Time(            { Script Manager routine }
  173.                             @timeStr[1],
  174.                             ord(timeStr[0]),
  175.                             @pDateCache,
  176.                             lengthUsed,
  177.                             timeRec);
  178.                             
  179.     IF (status >= 0)
  180.     THEN
  181.         BEGIN
  182.         WITH timeRec DO
  183.             BEGIN
  184.             timeSecs := (hour   * LONGINT(kSecsPerHour))   +
  185.                         (minute * LONGINT(kSecsPerMinute)) +
  186.                         second;
  187.             END;
  188.         END
  189.     ELSE
  190.         timeSecs := kNotATime;
  191.     
  192.     StringToTime := status;
  193.     END;  { StringToTime }
  194.  
  195. {------------------------------------------------------------------------------}
  196. {$S Date_Seg}
  197.                         
  198. FUNCTION  LongDateTimeToTime(
  199.                     VAR    dateSecs:        LongDateTime)
  200.                         :LONGINT;
  201.     { This routine extracts the current time from the given LongDateTime. }
  202.     VAR
  203.         theRec:            LongDateRec;
  204.     
  205.     BEGIN
  206.     SecsToRec(dateSecs, theRec);
  207.     
  208.     WITH theRec DO
  209.         BEGIN
  210.         LongDateTimeToTime := (hour   * LONGINT(kSecsPerHour))   +
  211.                               (minute * LONGINT(kSecsPerMinute)) +
  212.                               second;
  213.         END;
  214.     END;  { LongDateTimeToTime }
  215.  
  216. {------------------------------------------------------------------------------}
  217. {$S Date_Seg}
  218.     
  219. PROCEDURE GetCurrentDate(
  220.                     VAR    dateSecs:        LongDateTime);
  221.     { Returns the current date. }
  222.     VAR
  223.         dateTime:        LONGINT;
  224.         result:            ARRAY[1..2] OF LONGINT;
  225.  
  226.     BEGIN
  227.     GetDateTime(dateTime);
  228.     
  229.     result[1] := 0;
  230.     result[2] := dateTime;
  231.     dateSecs := LongDateTime(result);
  232.     END;  { GetCurrentDate }
  233.  
  234. {------------------------------------------------------------------------------}
  235. {$S Date_Seg}
  236.     
  237. PROCEDURE GetCurrentTime(
  238.                     VAR    timeSecs:        LONGINT);
  239.     { Returns the current time. }
  240.     VAR
  241.         currentDate:    LongDateTime;
  242.     
  243.     BEGIN
  244.     GetCurrentDate(currentDate);
  245.     
  246.     timeSecs := LongDateTimeToTime(currentDate);
  247.     END;  { GetCurrentTime }
  248.     
  249.  
  250. {------------------------------------------------------------------------------}